home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume6 / xfig2 / patch5e < prev    next >
Encoding:
Internet Message Format  |  1993-04-28  |  32.3 KB

  1. From: envbvs@epb2.lbl.gov (Brian V. Smith)
  2. Newsgroups: comp.sources.x
  3. Subject: v06i054: xfig 2.0 (part 5/7), Patch5
  4. Message-ID: <133695@sun.Eng.Sun.COM>
  5. Date: 30 Mar 90 04:34:01 GMT
  6. Approved: argv@sun.com
  7.  
  8. Submitted-by: envbvs@epb2.lbl.gov (Brian V. Smith)
  9. Posting-number: Volume 6, Issue 54
  10. Archive-name: xfig2/patch5e
  11. Patch-To: xfig2: Volume 6, Issue 9-24,34-36
  12.  
  13. #! /bin/sh
  14. # This is a shell archive.  Remove anything before this line, then unpack
  15. # it by saving it into a file and typing "sh file".  To overwrite existing
  16. # files, type "sh file -c".  You can also feed this as standard input via
  17. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  18. # will see the following message at the end:
  19. #        "End of archive 5 (of 7)."
  20. # Contents:  panel.c.diff
  21. # Wrapped by envbvs@epb2.lbl.gov on Wed Mar 28 09:05:07 1990
  22. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  23. if test -f 'panel.c.diff' -a "${1}" != "-c" ; then 
  24.   echo shar: Will not clobber existing file \"'panel.c.diff'\"
  25. else
  26. echo shar: Extracting \"'panel.c.diff'\" \(30195 characters\)
  27. sed "s/^X//" >'panel.c.diff' <<'END_OF_FILE'
  28. X*** panel.c.p5    Mon Mar 12 12:04:18 1990
  29. X--- panel.c    Mon Mar 26 15:31:22 1990
  30. X***************
  31. X*** 30,36 ****
  32. X  extern    int    fill_mode;
  33. X  extern    int    foreground_color;
  34. X  extern    char    current_file[];
  35. X- extern    int    landscape;
  36. X  extern    int    print_landscape;
  37. X  extern    int    size_button;
  38. X  extern    int    type_button;
  39. X--- 30,35 ----
  40. X***************
  41. X*** 37,45 ****
  42. X  extern    char    *printer;
  43. X  extern    int    cur_printer;
  44. X  extern    char    *printer_list[];
  45. X- extern    int    INCHES;
  46. X  extern    TOOL    fontmenu;        /* popup menu for printer fonts */
  47. X! extern    int    figure_modified;
  48. X  
  49. X  /**************     local variables and routines   **************/
  50. X  
  51. X--- 36,43 ----
  52. X  extern    char    *printer;
  53. X  extern    int    cur_printer;
  54. X  extern    char    *printer_list[];
  55. X  extern    TOOL    fontmenu;        /* popup menu for printer fonts */
  56. X! extern    appresStruct    appres;
  57. X  
  58. X  /**************     local variables and routines   **************/
  59. X  
  60. X***************
  61. X*** 97,102 ****
  62. X--- 95,102 ----
  63. X  static    F_switch *text_just_sw;    /* text justification button */
  64. X  static    F_switch *land_port_sw;    /* landscape/portrait button */
  65. X  
  66. X+ TOOL    ind_box;    /* allow main() to access this widget */
  67. X+ 
  68. X  #define        on_action(z)    (z->on_func)(z)
  69. X  #define        off_action(z)    (z->off_func)(z)
  70. X  
  71. X***************
  72. X*** 207,266 ****
  73. X  
  74. X  static Arg    panel_args[] =
  75. X  {
  76. X!     /*  0 */ { XtNx, (XtArgVal)0 },
  77. X!     /*  1 */ { XtNy, (XtArgVal)0 },
  78. X!     /*  2 */ { XtNwidth, (XtArgVal)0 },
  79. X!     /*  3 */ { XtNheight, (XtArgVal)0 },
  80. X!     /*  4 */ { XtNhSpace, (XtArgVal)SWITCH_ICON_SPACING },
  81. X!     /*  5 */ { XtNvSpace, (XtArgVal)SWITCH_ICON_SPACING },
  82. X      /* Fix the size of the panel window by chaining both top & bottom
  83. X         to the top of the form, and both left & right to the right.
  84. X         If RHS_PANEL, then chain left/right to RIGHT of form */
  85. X!     /*  6 */ { XtNtop, (XtArgVal)XtChainTop},
  86. X!     /*  7 */ { XtNbottom, (XtArgVal)XtChainTop},
  87. X!     /*  8 */ { XtNleft, (XtArgVal)XtChainLeft },
  88. X!     /*  9 */ { XtNright, (XtArgVal)XtChainLeft },
  89. X!     /* 10 */ { XtNresizable, (XtArgVal) False },
  90. X  };
  91. X  
  92. X  static Arg    panel2_args[] =
  93. X  {
  94. X!     /* 0 */ { XtNx, (XtArgVal)0 },
  95. X!     /* 1 */ { XtNy, (XtArgVal)0 },
  96. X!     /* 2 */ { XtNwidth, (XtArgVal)0 },
  97. X!     /* 3 */ { XtNheight, (XtArgVal)0 },
  98. X!     /* 4 */ { XtNhSpace, (XtArgVal)SWITCH_ICON_SPACING },
  99. X!     /* 5 */ { XtNvSpace, (XtArgVal) SWITCH_ICON_SPACING/2 },
  100. X!     /* 6 */ { XtNresizable, (XtArgVal) FALSE },
  101. X!     /* 7 */ { XtNfromHoriz, (XtArgVal) NULL },
  102. X!     /* 8 */ { XtNfromVert, (XtArgVal) NULL },
  103. X!     /* 9 */ { XtNhorizDistance, (XtArgVal) SWITCH_ICON_SPACING },
  104. X!     /* 10 */ { XtNvertDistance, (XtArgVal) 1 },
  105. X      /* Fix the size of the panel window by chaining both top & bottom
  106. X         to the top of the form, and both left & right to the right */
  107. X!     /* 11 */ { XtNtop, (XtArgVal)XtChainBottom},
  108. X!     /* 12 */ { XtNbottom, (XtArgVal)XtChainBottom},
  109. X!     /* 13 */ { XtNleft, (XtArgVal)XtChainLeft },
  110. X!     /* 14 */ { XtNright, (XtArgVal)XtChainLeft },
  111. X  };
  112. X  
  113. X  static Arg    ind_box_args[] =
  114. X  {
  115. X!     /*  0 */ { XtNx, (XtArgVal)0 },
  116. X!     /*  1 */ { XtNy, (XtArgVal)0 },
  117. X!     /*  2 */ { XtNwidth, (XtArgVal)0 },
  118. X!     /*  3 */ { XtNheight, (XtArgVal)0 },
  119. X!     /*  4 */ { XtNhSpace, (XtArgVal)SWITCH_ICON_SPACING },
  120. X!     /*  5 */ { XtNvSpace, (XtArgVal)SWITCH_ICON_SPACING },
  121. X!     /*  6 */ { XtNfromVert, (XtArgVal) NULL },
  122. X!     /*  7 */ { XtNvertDistance, (XtArgVal) SWITCH_ICON_SPACING },
  123. X      /* Fix the size of the panel window by chaining both top & bottom
  124. X         to the top of the form, and both left & right to the right
  125. X         If RHS_PANEL, then chain left/right to RIGHT of form */
  126. X!     /*  8 */ { XtNtop, (XtArgVal)XtChainTop},
  127. X!     /*  9 */ { XtNbottom, (XtArgVal)XtChainTop},
  128. X!     /* 10 */ { XtNleft, (XtArgVal)XtChainLeft },
  129. X!     /* 11 */ { XtNright, (XtArgVal)XtChainLeft },
  130. X  };
  131. X  
  132. X  /* widget arguments to show the current fill color and line thickness*/
  133. X--- 207,258 ----
  134. X  
  135. X  static Arg    panel_args[] =
  136. X  {
  137. X!     /* 0 */ { XtNwidth, (XtArgVal) 0 },
  138. X!     /* 1 */ { XtNhSpace, (XtArgVal)SWITCH_ICON_SPACING },
  139. X!     /* 2 */ { XtNvSpace, (XtArgVal)SWITCH_ICON_SPACING },
  140. X      /* Fix the size of the panel window by chaining both top & bottom
  141. X         to the top of the form, and both left & right to the right.
  142. X         If RHS_PANEL, then chain left/right to RIGHT of form */
  143. X!     /* 3 */ { XtNtop,    (XtArgVal)XtChainTop  },
  144. X!     /* 4 */ { XtNbottom, (XtArgVal)XtChainTop  },
  145. X!     /* 5 */ { XtNleft,   (XtArgVal)XtChainLeft },
  146. X!     /* 6 */ { XtNright,  (XtArgVal)XtChainLeft },
  147. X!     /* 7 */ { XtNresizable, (XtArgVal) False },
  148. X!     /* 8 */ { XtNborderWidth, (XtArgVal) 2 },
  149. X!     /* 9 */ { XtNvertDistance, (XtArgVal) 0 },    /* touching top of form */
  150. X  };
  151. X  
  152. X  static Arg    panel2_args[] =
  153. X  {
  154. X!     /*  0 */ { XtNwidth, (XtArgVal)0 },
  155. X!     /*  1 */ { XtNhSpace, (XtArgVal) 1 },
  156. X!     /*  2 */ { XtNvSpace, (XtArgVal) 1 },
  157. X!     /*  3 */ { XtNresizable, (XtArgVal) False },
  158. X!     /*  4 */ { XtNfromVert, (XtArgVal) NULL },    /* will be from psfont */
  159. X!     /*  5 */ { XtNvertDistance, (XtArgVal) -1 },
  160. X!     /*  6 */ { XtNhorizDistance, (XtArgVal) 1 },
  161. X      /* Fix the size of the panel window by chaining both top & bottom
  162. X         to the top of the form, and both left & right to the right */
  163. X!     /*  7 */ { XtNtop,    (XtArgVal)XtChainBottom },
  164. X!     /*  8 */ { XtNbottom, (XtArgVal)XtChainBottom },
  165. X!     /*  9 */ { XtNleft,   (XtArgVal)XtChainLeft   },
  166. X!     /* 10 */ { XtNright,  (XtArgVal)XtChainLeft   },
  167. X  };
  168. X  
  169. X  static Arg    ind_box_args[] =
  170. X  {
  171. X!     /* 0 */ { XtNwidth, (XtArgVal) 0 },
  172. X!     /* 1 */ { XtNhSpace, (XtArgVal)SWITCH_ICON_SPACING },
  173. X!     /* 2 */ { XtNfromVert, (XtArgVal) NULL },    /* will be from panel_sw */
  174. X!     /* 3 */ { XtNvertDistance, (XtArgVal) 0 },
  175. X!     /* 4 */ { XtNborderWidth, (XtArgVal) 2 },
  176. X      /* Fix the size of the panel window by chaining both top & bottom
  177. X         to the top of the form, and both left & right to the right
  178. X         If RHS_PANEL, then chain left/right to RIGHT of form */
  179. X!     /* 5 */ { XtNtop,    (XtArgVal)XtChainTop  },
  180. X!     /* 6 */ { XtNbottom, (XtArgVal)XtChainTop  },
  181. X!     /* 7 */ { XtNleft,   (XtArgVal)XtChainLeft },
  182. X!     /* 8 */ { XtNright,  (XtArgVal)XtChainLeft },
  183. X  };
  184. X  
  185. X  /* widget arguments to show the current fill color and line thickness*/
  186. X***************
  187. X*** 267,307 ****
  188. X  
  189. X  static Arg    indicator_panel_args[] =
  190. X  {
  191. X!     /*  0 */ { XtNx, (XtArgVal)0 },
  192. X!     /*  1 */ { XtNy, (XtArgVal)0 },
  193. X!     /*  2 */ { XtNlabel, (XtArgVal)"        " },
  194. X!     /*  3 */ { XtNwidth, (XtArgVal) SWITCH_ICON_WIDTH },
  195. X!     /*  4 */ { XtNheight, (XtArgVal) SWITCH_ICON_HEIGHT },
  196. X!     /*  5 */ { XtNresizable, (XtArgVal) FALSE },
  197. X!     /*  6 */ { XtNborderWidth, (XtArgVal) 1},
  198. X!     /*  7 */ { XtNbackgroundPixmap, (XtArgVal) NULL },
  199. X  };
  200. X  
  201. X  static void button_select();
  202. X  
  203. X- /* we aren't using the callback anymore - see sel_but() */
  204. X- static XtCallbackRec    button_callbacks[] =
  205. X- {
  206. X-     { button_select, NULL },
  207. X-     { NULL, NULL },
  208. X- };
  209. X- 
  210. X  static Arg    button_args[] =
  211. X  {
  212. X!     /* 0 */ { XtNx, (XtArgVal)0 },
  213. X!     /* 1 */ { XtNy, (XtArgVal)0 },
  214. X!     /* 2 */ { XtNlabel, (XtArgVal)"        " },
  215. X!     /* 3 */ { XtNwidth, (XtArgVal)0 },
  216. X!     /* 4 */ { XtNheight, (XtArgVal)0 },
  217. X!     /* 5 */ { XtNbackgroundPixmap, (XtArgVal)NULL },
  218. X!     /* 6 */ { XtNresizable, (XtArgVal) FALSE },
  219. X!     /* 7 */ { XtNborderWidth, (XtArgVal) 1},
  220. X!     /* 8 */ { XtNresize, (XtArgVal) FALSE },   /* this keeps the damned buttons from
  221. X                                being resized when there are not a
  222. X                                multiple of three of them */
  223. X- 
  224. X-     /* callbacks not used anymore */
  225. X-     /* 8 */ /* { XtNcallback, (XtArgVal)button_callbacks }, */
  226. X  };
  227. X  
  228. X  extern int    PANEL_LEFT, PANEL_TOP, PANEL_HEIGHT, PANEL_WID;
  229. X--- 259,285 ----
  230. X  
  231. X  static Arg    indicator_panel_args[] =
  232. X  {
  233. X!     /*  0 */ { XtNlabel, (XtArgVal)"        " },
  234. X!     /*  1 */ { XtNwidth, (XtArgVal)  SWITCH_ICON_WIDTH },
  235. X!     /*  2 */ { XtNheight, (XtArgVal) SWITCH_ICON_HEIGHT },
  236. X!     /*  3 */ { XtNresizable, (XtArgVal) False },
  237. X!     /*  4 */ { XtNborderWidth, (XtArgVal) 1 },
  238. X!     /*  5 */ { XtNbackgroundPixmap, (XtArgVal) NULL },
  239. X  };
  240. X  
  241. X  static void button_select();
  242. X  
  243. X  static Arg    button_args[] =
  244. X  {
  245. X!     /* 0 */ { XtNlabel, (XtArgVal)"        " },
  246. X!     /* 1 */ { XtNwidth, (XtArgVal)  0 },
  247. X!     /* 2 */ { XtNheight, (XtArgVal) 0 },
  248. X!     /* 3 */ { XtNbackgroundPixmap, (XtArgVal)NULL },
  249. X!     /* 4 */ { XtNresizable, (XtArgVal) False },
  250. X!     /* 5 */ { XtNborderWidth, (XtArgVal) 1 },
  251. X!     /* 6 */ { XtNresize, (XtArgVal) False },   /* this keeps the damned buttons from
  252. X                                being resized when there are not a
  253. X                                multiple of three of them */
  254. X  };
  255. X  
  256. X  extern int    PANEL_LEFT, PANEL_TOP, PANEL_HEIGHT, PANEL_WID;
  257. X***************
  258. X*** 321,341 ****
  259. X      register F_switch    *sw;
  260. X  
  261. X      /* width */
  262. X!     panel_args[2].value = PANEL_WID =
  263. X          (SWITCH_ICON_WIDTH + 2 + SWITCH_ICON_SPACING) * ICON_COLUMN
  264. X          + SWITCH_ICON_SPACING;
  265. X!     /* height */
  266. X!     panel_args[3].value = PANEL_HEIGHT = CANVAS_HEIGHT + RULER_WIDTH + MSG_HEIGHT;
  267. X!     panel_sw = XtCreateWidget("panel", boxWidgetClass, tool, panel_args,
  268. X!         XtNumber(panel_args));
  269. X  
  270. X      for (i = 0; i < N_SWITCHES; ++i)
  271. X      {
  272. X          sw = &switches[i];
  273. X!         button_args[0].value = sw->x * sw->icon->width;
  274. X!         button_args[1].value = sw->y * sw->icon->height;
  275. X!         button_args[3].value = sw->icon->width;
  276. X!         button_args[4].value = sw->icon->height;
  277. X          sw->but.widget = XtCreateManagedWidget(
  278. X              "button", commandWidgetClass,
  279. X              panel_sw, button_args, XtNumber(button_args));
  280. X--- 299,315 ----
  281. X      register F_switch    *sw;
  282. X  
  283. X      /* width */
  284. X!     panel_args[0].value = PANEL_WID =
  285. X          (SWITCH_ICON_WIDTH + 2 + SWITCH_ICON_SPACING) * ICON_COLUMN
  286. X          + SWITCH_ICON_SPACING;
  287. X!     panel_sw = XtCreateWidget("side_panel", boxWidgetClass, tool, 
  288. X!             panel_args, XtNumber(panel_args));
  289. X  
  290. X      for (i = 0; i < N_SWITCHES; ++i)
  291. X      {
  292. X          sw = &switches[i];
  293. X!         button_args[1].value = sw->icon->width;        /* button width */
  294. X!         button_args[2].value = sw->icon->height;    /* button height */
  295. X          sw->but.widget = XtCreateManagedWidget(
  296. X              "button", commandWidgetClass,
  297. X              panel_sw, button_args, XtNumber(button_args));
  298. X***************
  299. X*** 355,365 ****
  300. X      register F_switch    *sw;
  301. X  
  302. X  
  303. X!     panel2_args[2].value = PANEL2_WID = 2 * N_SWITCHES2 *
  304. X              (SWITCH_ICON_WIDTH + SWITCH_ICON_SPACING)
  305. X              + SWITCH_ICON_SPACING;
  306. X!     panel2_args[3].value=PANEL2_HEIGHT= SWITCH_ICON_HEIGHT + 3*SWITCH_ICON_SPACING;
  307. X!     panel2_args[8].value = (XtArgVal) psfont;  /* vert offset from font window */
  308. X  
  309. X      panel2_sw = XtCreateWidget("bottom_panel", boxWidgetClass, tool, panel2_args,
  310. X          XtNumber(panel2_args));
  311. X--- 329,339 ----
  312. X      register F_switch    *sw;
  313. X  
  314. X  
  315. X!     /* panel width */
  316. X!     panel2_args[0].value = PANEL2_WID = 2 * N_SWITCHES2 *
  317. X              (SWITCH_ICON_WIDTH + SWITCH_ICON_SPACING)
  318. X              + SWITCH_ICON_SPACING;
  319. X!     panel2_args[4].value = (XtArgVal) psfont;  /* vert offset from font window */
  320. X  
  321. X      panel2_sw = XtCreateWidget("bottom_panel", boxWidgetClass, tool, panel2_args,
  322. X          XtNumber(panel2_args));
  323. X***************
  324. X*** 366,375 ****
  325. X      for (i = 0; i < N_SWITCHES2; ++i)
  326. X      {
  327. X          sw = &switches2[i];
  328. X!         button_args[0].value = sw->x * sw->icon->width;
  329. X!         button_args[1].value = sw->y * sw->icon->height;
  330. X!         button_args[3].value = sw->icon->width;
  331. X!         button_args[4].value = sw->icon->height;
  332. X          sw->but.widget = XtCreateManagedWidget(
  333. X              "button", commandWidgetClass,
  334. X              panel2_sw, button_args, XtNumber(button_args));
  335. X--- 340,347 ----
  336. X      for (i = 0; i < N_SWITCHES2; ++i)
  337. X      {
  338. X          sw = &switches2[i];
  339. X!         button_args[1].value = sw->icon->width;        /* button width */
  340. X!         button_args[2].value = sw->icon->height;    /* button height */
  341. X          sw->but.widget = XtCreateManagedWidget(
  342. X              "button", commandWidgetClass,
  343. X              panel2_sw, button_args, XtNumber(button_args));
  344. X***************
  345. X*** 380,416 ****
  346. X      return (1);
  347. X  }
  348. X  
  349. X! Widget ind_box;
  350. X  
  351. X  init_indicator_panel(tool)
  352. X  TOOL tool;
  353. X      {
  354. X      /* width */
  355. X!     ind_box_args[2].value = 
  356. X!         (SWITCH_ICON_WIDTH + 2 + SWITCH_ICON_SPACING)*3 + SWITCH_ICON_SPACING;
  357. X!     /* height */
  358. X!     ind_box_args[3].value = SWITCH_ICON_HEIGHT+2*SWITCH_ICON_SPACING;
  359. X  
  360. X      /* put below bottom of panel_sw */
  361. X!     ind_box_args[6].value = (XtArgVal) panel_sw;
  362. X  
  363. X      ind_box = XtCreateWidget("indicator", boxWidgetClass, tool, ind_box_args,
  364. X          XtNumber(ind_box_args));
  365. X  
  366. X!     indicator_panel_args[7].value = (XtArgVal) ind_fill_pm[0];/* white pixmap */
  367. X  
  368. X!     /* horiz position for line thickness indicator */
  369. X!     indicator_panel_args[0].value = (XtArgVal) SWITCH_ICON_SPACING;
  370. X      line_thick_panel = XtCreateManagedWidget( "linewidth_indicator", boxWidgetClass,
  371. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  372. X  
  373. X!     /* horiz position for rounded-corner box radius indicator */
  374. X!     indicator_panel_args[0].value += SWITCH_ICON_WIDTH+SWITCH_ICON_SPACING;
  375. X      radius_panel = XtCreateManagedWidget( "radius_indicator", boxWidgetClass,
  376. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  377. X              
  378. X!     /* horiz position for fill_area color */
  379. X!     indicator_panel_args[0].value += SWITCH_ICON_WIDTH+SWITCH_ICON_SPACING;
  380. X      fill_panel = XtCreateManagedWidget( "fill_indicator", boxWidgetClass,
  381. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  382. X      }
  383. X--- 352,384 ----
  384. X      return (1);
  385. X  }
  386. X  
  387. X! #define NUM_IND 3    /* number of indicator widgets */
  388. X  
  389. X  init_indicator_panel(tool)
  390. X  TOOL tool;
  391. X      {
  392. X      /* width */
  393. X!     ind_box_args[0].value = 
  394. X!         (SWITCH_ICON_WIDTH + 2 + SWITCH_ICON_SPACING)*NUM_IND
  395. X!             + SWITCH_ICON_SPACING;
  396. X  
  397. X      /* put below bottom of panel_sw */
  398. X!     ind_box_args[2].value = (XtArgVal) panel_sw;
  399. X  
  400. X      ind_box = XtCreateWidget("indicator", boxWidgetClass, tool, ind_box_args,
  401. X          XtNumber(ind_box_args));
  402. X  
  403. X!     indicator_panel_args[5].value = (XtArgVal) ind_fill_pm[0];/* white pixmap */
  404. X  
  405. X!     /* rounded-corner box radius indicator */
  406. X      line_thick_panel = XtCreateManagedWidget( "linewidth_indicator", boxWidgetClass,
  407. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  408. X  
  409. X!     /* line thickness indicator */
  410. X      radius_panel = XtCreateManagedWidget( "radius_indicator", boxWidgetClass,
  411. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  412. X              
  413. X!     /* fill_area color */
  414. X      fill_panel = XtCreateManagedWidget( "fill_indicator", boxWidgetClass,
  415. X          ind_box, indicator_panel_args, XtNumber(indicator_panel_args));
  416. X      }
  417. X***************
  418. X*** 426,436 ****
  419. X      register Display    *d = tool_d;
  420. X      register Screen        *s = tool_s;
  421. X      register Pixmap        p;
  422. X-     XGCValues        gcv;
  423. X      Arg            tmp_arg[3];
  424. X      long            bg, fg;
  425. X      
  426. X!     button_gc = XCreateGC(d, XtWindow(panel_sw), 0, &gcv);
  427. X      XtSetArg(tmp_arg[0], XtNbackground, &bg);
  428. X      XtSetArg(tmp_arg[1], XtNforeground, &fg);
  429. X      XtGetValues(switches[0].but.widget, tmp_arg, 2);
  430. X--- 394,403 ----
  431. X      register Display    *d = tool_d;
  432. X      register Screen        *s = tool_s;
  433. X      register Pixmap        p;
  434. X      Arg            tmp_arg[3];
  435. X      long            bg, fg;
  436. X      
  437. X!     button_gc = XCreateGC(d, XtWindow(panel_sw), (unsigned long)0, NULL);
  438. X      XtSetArg(tmp_arg[0], XtNbackground, &bg);
  439. X      XtSetArg(tmp_arg[1], XtNforeground, &fg);
  440. X      XtGetValues(switches[0].but.widget, tmp_arg, 2);
  441. X***************
  442. X*** 446,459 ****
  443. X                  sw->icon->width, sw->icon->height,fg,bg,
  444. X                  DefaultDepthOfScreen(s));
  445. X  
  446. X!         sw->but.normal = button_args[5].value = (XtArgVal)p;
  447. X!         XtSetValues(sw->but.widget, &button_args[5], 1);
  448. X      }
  449. X  /*
  450. X  **    Create reversed bitmaps for displaying activated state
  451. X  */
  452. X-     XSetForeground(d, button_gc, bg);
  453. X-     XSetBackground(d, button_gc, fg);
  454. X      for (i = 0; i < N_SWITCHES; ++i)
  455. X      {
  456. X          sw = &switches[i];
  457. X--- 413,424 ----
  458. X                  sw->icon->width, sw->icon->height,fg,bg,
  459. X                  DefaultDepthOfScreen(s));
  460. X  
  461. X!         sw->but.normal = button_args[3].value = (XtArgVal)p;
  462. X!         XtSetValues(sw->but.widget, &button_args[3], 1);
  463. X      }
  464. X  /*
  465. X  **    Create reversed bitmaps for displaying activated state
  466. X  */
  467. X      for (i = 0; i < N_SWITCHES; ++i)
  468. X      {
  469. X          sw = &switches[i];
  470. X***************
  471. X*** 469,476 ****
  472. X      /* now do the same for panel 2 */
  473. X      /*******************************/
  474. X  
  475. X-     XSetForeground(d, button_gc, fg);
  476. X-     XSetBackground(d, button_gc, bg);
  477. X      for (i = 0; i < N_SWITCHES2; ++i)
  478. X      {
  479. X          sw = &switches2[i];
  480. X--- 434,439 ----
  481. X***************
  482. X*** 485,491 ****
  483. X                  port_ic.data,
  484. X                  port_ic.width, port_ic.height,fg,bg,
  485. X                  DefaultDepthOfScreen(s));
  486. X!             if (landscape==0)    /* use portrait for startup image */
  487. X                  p = lP_pm;
  488. X              land_port_sw = sw;    /* save pointer to this switch */
  489. X              }
  490. X--- 448,454 ----
  491. X                  port_ic.data,
  492. X                  port_ic.width, port_ic.height,fg,bg,
  493. X                  DefaultDepthOfScreen(s));
  494. X!             if (!appres.landscape)    /* use portrait for startup image */
  495. X                  p = lP_pm;
  496. X              land_port_sw = sw;    /* save pointer to this switch */
  497. X              }
  498. X***************
  499. X*** 516,529 ****
  500. X              print_sel_widget=sw->but.widget;
  501. X              }
  502. X  
  503. X!         sw->but.normal = button_args[5].value = (XtArgVal)p;
  504. X!         XtSetValues(sw->but.widget, &button_args[5], 1);
  505. X      }
  506. X  /*
  507. X  **    Create reversed bitmaps for displaying activated state
  508. X  */
  509. X-     XSetForeground(d, button_gc, bg);
  510. X-     XSetBackground(d, button_gc, fg);
  511. X      for (i = 0; i < N_SWITCHES2; ++i)
  512. X      {
  513. X          sw = &switches2[i];
  514. X--- 479,490 ----
  515. X              print_sel_widget=sw->but.widget;
  516. X              }
  517. X  
  518. X!         sw->but.normal = button_args[3].value = (XtArgVal)p;
  519. X!         XtSetValues(sw->but.widget, &button_args[3], 1);
  520. X      }
  521. X  /*
  522. X  **    Create reversed bitmaps for displaying activated state
  523. X  */
  524. X      for (i = 0; i < N_SWITCHES2; ++i)
  525. X      {
  526. X          sw = &switches2[i];
  527. X***************
  528. X*** 534,543 ****
  529. X          sw->but.reverse = (XtArgVal)p;
  530. X      }
  531. X  
  532. X-     /* set the foreground and background back to normal */
  533. X-     XSetForeground(d, button_gc, fg);
  534. X-     XSetBackground(d, button_gc, bg);
  535. X- 
  536. X      init_switch();
  537. X      panel_pixwin = panel_swfd = XtWindow(panel_sw);
  538. X      XDefineCursor(d, panel_swfd, (Cursor)arrow_cursor.bitmap);
  539. X--- 495,500 ----
  540. X***************
  541. X*** 600,606 ****
  542. X      extern int    latexline_mode;
  543. X      extern int    latexarrow_mode;
  544. X      extern int    magnet_mode;
  545. X!     extern int    cur_line_style;
  546. X      extern float    cur_styleval;
  547. X      extern float    cur_dashlength;
  548. X      extern float    cur_dotgap;
  549. X--- 557,563 ----
  550. X      extern int    latexline_mode;
  551. X      extern int    latexarrow_mode;
  552. X      extern int    magnet_mode;
  553. X!     extern int    line_style;
  554. X      extern float    cur_styleval;
  555. X      extern float    cur_dashlength;
  556. X      extern float    cur_dotgap;
  557. X***************
  558. X*** 659,673 ****
  559. X              autobackwardarrow_mode = 1;
  560. X              break;
  561. X              case F_SET_SOLID_LINE :
  562. X!             cur_line_style = SOLID_LINE;
  563. X              cur_styleval = 0.0;
  564. X              break;
  565. X              case F_SET_DASH_LINE :
  566. X!             cur_line_style = DASH_LINE;
  567. X              cur_styleval = cur_dashlength;
  568. X              break;
  569. X              case F_SET_DOTTED_LINE :
  570. X!             cur_line_style = DOTTED_LINE;
  571. X              cur_styleval = cur_dotgap;
  572. X              break;
  573. X              case F_MAGNET :
  574. X--- 616,630 ----
  575. X              autobackwardarrow_mode = 1;
  576. X              break;
  577. X              case F_SET_SOLID_LINE :
  578. X!             line_style = SOLID_LINE;
  579. X              cur_styleval = 0.0;
  580. X              break;
  581. X              case F_SET_DASH_LINE :
  582. X!             line_style = DASH_LINE;
  583. X              cur_styleval = cur_dashlength;
  584. X              break;
  585. X              case F_SET_DOTTED_LINE :
  586. X!             line_style = DOTTED_LINE;
  587. X              cur_styleval = cur_dotgap;
  588. X              break;
  589. X              case F_MAGNET :
  590. X***************
  591. X*** 975,981 ****
  592. X          case F_MAGNET :
  593. X          magnet_mode = 1;
  594. X          put_msg("MAGNET: round entered points to the nearest %s increment",
  595. X!                 (INCHES? "1/16\"": "2 mm"));
  596. X          break;
  597. X          case F_FILL :
  598. X          fill_mode = 1;
  599. X--- 932,938 ----
  600. X          case F_MAGNET :
  601. X          magnet_mode = 1;
  602. X          put_msg("MAGNET: round entered points to the nearest %s increment",
  603. X!                 (appres.INCHES? "1/16\"": "2 mm"));
  604. X          break;
  605. X          case F_FILL :
  606. X          fill_mode = 1;
  607. X***************
  608. X*** 1014,1020 ****
  609. X  set_style(sw)
  610. X  F_switch    *sw;
  611. X  {
  612. X!     extern int    cur_line_style;
  613. X      extern float    cur_styleval;
  614. X      extern float    cur_dashlength;
  615. X      extern float    cur_dotgap;
  616. X--- 971,977 ----
  617. X  set_style(sw)
  618. X  F_switch    *sw;
  619. X  {
  620. X!     extern int    line_style;
  621. X      extern float    cur_styleval;
  622. X      extern float    cur_dashlength;
  623. X      extern float    cur_dotgap;
  624. X***************
  625. X*** 1021,1037 ****
  626. X  
  627. X      switch (sw->value) {
  628. X          case F_SET_SOLID_LINE :
  629. X!         cur_line_style = SOLID_LINE;
  630. X          cur_styleval = 0.0;
  631. X          put_msg("SOLID LINE STYLE (for BOX, POLYGON and POLYLINE)");
  632. X          break;
  633. X          case F_SET_DASH_LINE :
  634. X!         cur_line_style = DASH_LINE;
  635. X          cur_styleval = cur_dashlength;
  636. X          put_msg("DASH LINE STYLE (for BOX, POLYGON and POLYLINE)");
  637. X          break;
  638. X          case F_SET_DOTTED_LINE :
  639. X!         cur_line_style = DOTTED_LINE;
  640. X          cur_styleval = cur_dotgap;
  641. X          put_msg("DOTTED LINE STYLE (for BOX, POLYGON and POLYLINE)");
  642. X          break;
  643. X--- 978,994 ----
  644. X  
  645. X      switch (sw->value) {
  646. X          case F_SET_SOLID_LINE :
  647. X!         line_style = SOLID_LINE;
  648. X          cur_styleval = 0.0;
  649. X          put_msg("SOLID LINE STYLE (for BOX, POLYGON and POLYLINE)");
  650. X          break;
  651. X          case F_SET_DASH_LINE :
  652. X!         line_style = DASH_LINE;
  653. X          cur_styleval = cur_dashlength;
  654. X          put_msg("DASH LINE STYLE (for BOX, POLYGON and POLYLINE)");
  655. X          break;
  656. X          case F_SET_DOTTED_LINE :
  657. X!         line_style = DOTTED_LINE;
  658. X          cur_styleval = cur_dotgap;
  659. X          put_msg("DOTTED LINE STYLE (for BOX, POLYGON and POLYLINE)");
  660. X          break;
  661. X***************
  662. X*** 1043,1049 ****
  663. X  dec_thick(sw)
  664. X  F_switch *sw;
  665. X      {
  666. X!     if (line_thickness > 1)
  667. X          --line_thickness;
  668. X      show_line_thickness();
  669. X      }
  670. X--- 1000,1006 ----
  671. X  dec_thick(sw)
  672. X  F_switch *sw;
  673. X      {
  674. X!     if (line_thickness > 0)
  675. X          --line_thickness;
  676. X      show_line_thickness();
  677. X      }
  678. X***************
  679. X*** 1069,1089 ****
  680. X              DefaultDepthOfScreen(tool_s));
  681. X      /* erase by drawing wide, inverted (white) line */
  682. X      pw_vector(line_pm, 0, SWITCH_ICON_HEIGHT/2,
  683. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, ERASE, SWITCH_ICON_HEIGHT);
  684. X      /* draw current line thickness into pixmap */
  685. X!     pw_vector(line_pm, 0, SWITCH_ICON_HEIGHT/2, 
  686. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, PAINT, line_thickness);
  687. X  
  688. X      /* Fool the toolkit by changing the background pixmap to 0
  689. X         then giving it the modified one again.  Otherwise, it sees
  690. X         that the pixmap ID is not changed and doesn't actually draw
  691. X         it into the widget window */
  692. X!     indicator_panel_args[7].value = 0;
  693. X!     XtSetValues(line_thick_panel, &indicator_panel_args[7], 1);
  694. X  
  695. X      /* put the pixmap in the widget background */
  696. X!     indicator_panel_args[7].value = line_pm;
  697. X!     XtSetValues(line_thick_panel, &indicator_panel_args[7], 1);
  698. X      put_msg("LINE Thickness = %d",line_thickness);
  699. X      }
  700. X  
  701. X--- 1026,1049 ----
  702. X              DefaultDepthOfScreen(tool_s));
  703. X      /* erase by drawing wide, inverted (white) line */
  704. X      pw_vector(line_pm, 0, SWITCH_ICON_HEIGHT/2,
  705. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, ERASE, 
  706. X!         SWITCH_ICON_HEIGHT, SOLID_LINE, 0.0);
  707. X      /* draw current line thickness into pixmap */
  708. X!     if (line_thickness > 0)        /* don't draw line for zero-thickness */
  709. X!         pw_vector(line_pm, 0, SWITCH_ICON_HEIGHT/2, 
  710. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, PAINT, 
  711. X!         line_thickness, SOLID_LINE, 0.0);
  712. X  
  713. X      /* Fool the toolkit by changing the background pixmap to 0
  714. X         then giving it the modified one again.  Otherwise, it sees
  715. X         that the pixmap ID is not changed and doesn't actually draw
  716. X         it into the widget window */
  717. X!     indicator_panel_args[5].value = 0;
  718. X!     XtSetValues(line_thick_panel, &indicator_panel_args[5], 1);
  719. X  
  720. X      /* put the pixmap in the widget background */
  721. X!     indicator_panel_args[5].value = line_pm;
  722. X!     XtSetValues(line_thick_panel, &indicator_panel_args[5], 1);
  723. X      put_msg("LINE Thickness = %d",line_thickness);
  724. X      }
  725. X  
  726. X***************
  727. X*** 1120,1140 ****
  728. X              DefaultDepthOfScreen(tool_s));
  729. X      /* erase by drawing wide, inverted (white) line */
  730. X      pw_vector(radius_pm, 0, SWITCH_ICON_HEIGHT/2,
  731. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, ERASE, SWITCH_ICON_HEIGHT);
  732. X      /* draw current radius into pixmap */
  733. X      curve(radius_pm, 0, cur_radius, cur_radius, 0, 0, 1, 1, 
  734. X!         1, SWITCH_ICON_HEIGHT-2, foreground_color, 1, 0);
  735. X  
  736. X      /* Fool the toolkit by changing the background pixmap to 0
  737. X         then giving it the modified one again.  Otherwise, it sees
  738. X         that the pixmap ID is not changed and doesn't actually draw
  739. X         it into the widget window */
  740. X!     indicator_panel_args[7].value = 0;
  741. X!     XtSetValues(radius_panel, &indicator_panel_args[7], 1);
  742. X  
  743. X      /* put the pixmap in the widget background */
  744. X!     indicator_panel_args[7].value = radius_pm;
  745. X!     XtSetValues(radius_panel, &indicator_panel_args[7], 1);
  746. X      put_msg("ROUNDED-CORNER BOX Radius = %d",cur_radius);
  747. X      }
  748. X  
  749. X--- 1080,1102 ----
  750. X              DefaultDepthOfScreen(tool_s));
  751. X      /* erase by drawing wide, inverted (white) line */
  752. X      pw_vector(radius_pm, 0, SWITCH_ICON_HEIGHT/2,
  753. X!         SWITCH_ICON_WIDTH, SWITCH_ICON_HEIGHT/2, ERASE, 
  754. X!         SWITCH_ICON_HEIGHT, SOLID_LINE, 0.0);
  755. X      /* draw current radius into pixmap */
  756. X      curve(radius_pm, 0, cur_radius, cur_radius, 0, 0, 1, 1, 
  757. X!         1, SWITCH_ICON_HEIGHT-2, foreground_color, 
  758. X!         1, SOLID_LINE, 0, 0.0);
  759. X  
  760. X      /* Fool the toolkit by changing the background pixmap to 0
  761. X         then giving it the modified one again.  Otherwise, it sees
  762. X         that the pixmap ID is not changed and doesn't actually draw
  763. X         it into the widget window */
  764. X!     indicator_panel_args[5].value = 0;
  765. X!     XtSetValues(radius_panel, &indicator_panel_args[5], 1);
  766. X  
  767. X      /* put the pixmap in the widget background */
  768. X!     indicator_panel_args[5].value = radius_pm;
  769. X!     XtSetValues(radius_panel, &indicator_panel_args[5], 1);
  770. X      put_msg("ROUNDED-CORNER BOX Radius = %d",cur_radius);
  771. X      }
  772. X  
  773. X***************
  774. X*** 1157,1164 ****
  775. X  show_fill_color()
  776. X      {
  777. X      /* put fill pixmap in widget background */
  778. X!     indicator_panel_args[7].value = ind_fill_pm[cur_areafill-1]; 
  779. X!     XtSetValues(fill_panel, &indicator_panel_args[7], 1);
  780. X      put_fmsg("FILL GRAY = %.2f", 1.0-(cur_areafill-1.0)/(NUMFILLPATS-1.0));
  781. X      }
  782. X  
  783. X--- 1119,1126 ----
  784. X  show_fill_color()
  785. X      {
  786. X      /* put fill pixmap in widget background */
  787. X!     indicator_panel_args[5].value = ind_fill_pm[cur_areafill-1]; 
  788. X!     XtSetValues(fill_panel, &indicator_panel_args[5], 1);
  789. X      put_fmsg("FILL GRAY = %.2f", 1.0-(cur_areafill-1.0)/(NUMFILLPATS-1.0));
  790. X      }
  791. X  
  792. X***************
  793. X*** 1268,1288 ****
  794. X  
  795. X      /* first erase any existing string in pixmap */
  796. X      XDrawImageString(tool_d, print_sel_pm, button_gc, 
  797. X!             6, 28, "        ", 8);
  798. X      /* write the printer name in the background pixmap */
  799. X      XDrawImageString(tool_d, print_sel_pm, button_gc, 
  800. X!             6, 28, printer, strlen(printer));
  801. X  
  802. X      /* Fool the toolkit by changing the background pixmap to 0
  803. X         then giving it the modified one again.  Otherwise, it sees
  804. X         that the pixmap ID is not changed and doesn't actually draw
  805. X         it into the widget window */
  806. X!     button_args[5].value = 0;
  807. X!     XtSetValues(print_sel_widget, &button_args[5], 1);
  808. X  
  809. X      /* put the pixmap in the widget background */
  810. X!     button_args[5].value = print_sel_pm;
  811. X!     XtSetValues(print_sel_widget, &button_args[5], 1);
  812. X      }
  813. X  
  814. X  /* popup menu of printer fonts */
  815. X--- 1230,1250 ----
  816. X  
  817. X      /* first erase any existing string in pixmap */
  818. X      XDrawImageString(tool_d, print_sel_pm, button_gc, 
  819. X!             6, 24, "        ", 8);
  820. X      /* write the printer name in the background pixmap */
  821. X      XDrawImageString(tool_d, print_sel_pm, button_gc, 
  822. X!             6, 24, printer, strlen(printer));
  823. X  
  824. X      /* Fool the toolkit by changing the background pixmap to 0
  825. X         then giving it the modified one again.  Otherwise, it sees
  826. X         that the pixmap ID is not changed and doesn't actually draw
  827. X         it into the widget window */
  828. X!     button_args[3].value = 0;
  829. X!     XtSetValues(print_sel_widget, &button_args[3], 1);
  830. X  
  831. X      /* put the pixmap in the widget background */
  832. X!     button_args[3].value = print_sel_pm;
  833. X!     XtSetValues(print_sel_widget, &button_args[3], 1);
  834. X      }
  835. X  
  836. X  /* popup menu of printer fonts */
  837. X***************
  838. X*** 1305,1312 ****
  839. X          type_button = 0;
  840. X      /* put the pixmap in the widget background */
  841. X      text_just_sw->but.normal = text_just_sw->but.reverse = 
  842. X!         button_args[5].value = (XtArgVal) text_just_pm[type_button];
  843. X!     XtSetValues(text_just_sw->but.widget, &button_args[5], 1);
  844. X      if (type_button==T_LEFT_JUSTIFIED)
  845. X          put_msg("Left justify text");
  846. X      else if (type_button==T_CENTER_JUSTIFIED)
  847. X--- 1267,1274 ----
  848. X          type_button = 0;
  849. X      /* put the pixmap in the widget background */
  850. X      text_just_sw->but.normal = text_just_sw->but.reverse = 
  851. X!         button_args[3].value = (XtArgVal) text_just_pm[type_button];
  852. X!     XtSetValues(text_just_sw->but.widget, &button_args[3], 1);
  853. X      if (type_button==T_LEFT_JUSTIFIED)
  854. X          put_msg("Left justify text");
  855. X      else if (type_button==T_CENTER_JUSTIFIED)
  856. X***************
  857. X*** 1383,1394 ****
  858. X         then giving it the modified one again.  Otherwise, it sees
  859. X         that the pixmap ID is not changed and doesn't actually draw
  860. X         it into the widget window */
  861. X!     button_args[5].value = 0;
  862. X!     XtSetValues(font_size_widget, &button_args[5], 1);
  863. X  
  864. X      /* put the pixmap in the widget background */
  865. X!     button_args[5].value = font_size_pm;
  866. X!     XtSetValues(font_size_widget, &button_args[5], 1);
  867. X      }
  868. X  
  869. X  /* change landscape/portrait flag for print */
  870. X--- 1345,1356 ----
  871. X         then giving it the modified one again.  Otherwise, it sees
  872. X         that the pixmap ID is not changed and doesn't actually draw
  873. X         it into the widget window */
  874. X!     button_args[3].value = 0;
  875. X!     XtSetValues(font_size_widget, &button_args[3], 1);
  876. X  
  877. X      /* put the pixmap in the widget background */
  878. X!     button_args[3].value = font_size_pm;
  879. X!     XtSetValues(font_size_widget, &button_args[3], 1);
  880. X      }
  881. X  
  882. X  /* change landscape/portrait flag for print */
  883. X***************
  884. X*** 1406,1413 ****
  885. X  land_port()
  886. X      {
  887. X      land_port_sw->but.normal = land_port_sw->but.reverse = 
  888. X!         button_args[5].value = (XtArgVal) (print_landscape? Lp_pm: lP_pm);
  889. X!     XtSetValues(land_port_sw->but.widget, &button_args[5], 1);
  890. X      put_msg("Print in %s mode",print_landscape? "LANDSCAPE": "PORTRAIT");
  891. X      }
  892. X  
  893. X--- 1368,1375 ----
  894. X  land_port()
  895. X      {
  896. X      land_port_sw->but.normal = land_port_sw->but.reverse = 
  897. X!         button_args[3].value = (XtArgVal) (print_landscape? Lp_pm: lP_pm);
  898. X!     XtSetValues(land_port_sw->but.widget, &button_args[3], 1);
  899. X      put_msg("Print in %s mode",print_landscape? "LANDSCAPE": "PORTRAIT");
  900. X      }
  901. X  
  902. X***************
  903. X*** 1433,1440 ****
  904. X      F_switch    *s;
  905. X  {
  906. X      s->on = 1;
  907. X!     button_args[5].value = (XtArgVal)s->but.reverse;
  908. X!     XtSetValues(s->but.widget, &button_args[5], 1);
  909. X  }
  910. X  
  911. X  turn_off(s)
  912. X--- 1395,1402 ----
  913. X      F_switch    *s;
  914. X  {
  915. X      s->on = 1;
  916. X!     button_args[3].value = (XtArgVal)s->but.reverse;
  917. X!     XtSetValues(s->but.widget, &button_args[3], 1);
  918. X  }
  919. X  
  920. X  turn_off(s)
  921. X***************
  922. X*** 1441,1448 ****
  923. X      F_switch    *s;
  924. X  {
  925. X      s->on = 0;
  926. X!     button_args[5].value = (XtArgVal)s->but.normal;
  927. X!     XtSetValues(s->but.widget, &button_args[5], 1);
  928. X  }
  929. X  
  930. X  static 
  931. X--- 1403,1410 ----
  932. X      F_switch    *s;
  933. X  {
  934. X      s->on = 0;
  935. X!     button_args[3].value = (XtArgVal)s->but.normal;
  936. X!     XtSetValues(s->but.widget, &button_args[3], 1);
  937. X  }
  938. X  
  939. X  static 
  940. END_OF_FILE
  941. if test 30195 -ne `wc -c <'panel.c.diff'`; then
  942.     echo shar: \"'panel.c.diff'\" unpacked with wrong size!
  943. fi
  944. # end of 'panel.c.diff'
  945. fi
  946. echo shar: End of archive 5 \(of 7\).
  947. cp /dev/null ark5isdone
  948. MISSING=""
  949. for I in 1 2 3 4 5 6 7 ; do
  950.     if test ! -f ark${I}isdone ; then
  951.     MISSING="${MISSING} ${I}"
  952.     fi
  953. done
  954. if test "${MISSING}" = "" ; then
  955.     echo You have unpacked all 7 archives.
  956.     rm -f ark[1-9]isdone
  957. else
  958.     echo You still need to unpack the following archives:
  959.     echo "        " ${MISSING}
  960. fi
  961. ##  End of shell archive.
  962. exit 0
  963.  
  964. dan
  965. -----------------------------------------------------------
  966.             O'Reilly && Associates
  967.         argv@sun.com / argv@ora.com
  968.        632 Petaluma Ave, Sebastopol, CA 95472 
  969.      800-338-NUTS, in CA: 800-533-NUTS, FAX 707-829-0104
  970.     Opinions expressed reflect those of the author only.
  971.